home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 7 / FM Towns Free Software Collection 7.iso / taropyon / install / install.cci < prev    next >
Text File  |  1993-11-30  |  6KB  |  259 lines

  1. /*************************************************************************
  2. *    インストーラー
  3. *************************************************************************/
  4.  
  5. #include    "ccilib.h"
  6.  
  7. #ifndef    DLGPOS_CENTER_OF_POS
  8.     /* 指定の座標を中心に    */
  9. #    define    DLGPOS_CENTER_OF_POS(_p)    (0x20000+((_p)&0xFFFF))
  10. #endif
  11.  
  12. /*    パレットデータ    */
  13. char    PltDat[3][16] =
  14. {
  15.     /* G R  B                                */
  16.     { 0, 0, 0},    /* C_BALCK                    */
  17.     { 0, 0, 0},    /* C_BLUE or C_THROUGH        */
  18.     { 7, 7, 8},    /* C_RED                    */
  19.     {12,12,13},    /* C_MAGENTA                */
  20.     { 6, 5, 7},    /* C_GREEN                    */
  21.     { 8, 7, 9},    /* C_CYAN                    */
  22.     {10, 9,11},    /* C_YELLOW                    */
  23.     {11,11,12},    /* C_WHITE                    */
  24.  
  25.     { 5, 5, 6},    /* C_HBALCK                    */
  26.     { 0, 0,11},    /* C_HBLUE                    */
  27.     { 0,11, 0},    /* C_HRED                    */
  28.     { 0,11,11},    /* C_HMAGENTA                */
  29.     {11, 0, 0},    /* C_HGEEN                    */
  30.     {11, 0,11},    /* C_HCYAN                    */
  31.     {11,11, 0},    /* C_HYELLOW                */
  32.     {14,14,15}    /* C_HWHITE                    */
  33. };
  34.  
  35. /*************************************************************************
  36. *    初期化
  37. *************************************************************************/
  38. int        init()
  39. {
  40.     int        i;
  41.  
  42.     DSP_sysInit(0);            /* 表示システム初期化        */
  43.     KBF_sysInit();            /* キーボードシステム初期化    */
  44.     KBF_kan_off();
  45.     FDL_sysInit();            /* ファイルダイアログ初期化    */
  46.  
  47.     sdk_control(0);            /* サイドワーク起動禁止    */
  48.     for ( i = 0; i < 2; ++i )
  49.     {
  50.         DSP_writePage(i);
  51.         DSP_setPlt( PltDat );    /* パレット設定            */
  52.     }
  53.  
  54.     DSP_writePage(1);
  55.     DSP_title("INSTALL","0.99",15,7,0,0);
  56.     evt_setDspTime( 1, 432, 4, 7, 0 );    /* 時刻表示アイドリング処理設定    */
  57.     SYL_clear();
  58. }
  59.  
  60. /*************************************************************************
  61. *    終了
  62. *************************************************************************/
  63. int        term()
  64. {
  65.     FDL_sysEnd();
  66.     KBF_sysEnd();
  67.     DSP_sysEnd();
  68. }
  69.  
  70. char    StartPath[256];
  71. char    ItmPath[256];        /* アイテムファイル    */
  72. int        DlgX0 = DLGPOS_CENTER_OF_POS(320);
  73. int        DlgY0 = DLGPOS_CENTER_OF_POS(320);
  74.  
  75. #define    FRM_X1(_frm)    _frm[0]
  76. #define    FRM_Y1(_frm)    _frm[1]
  77. #define    FRM_X2(_frm)    _frm[2]
  78. #define    FRM_Y2(_frm)    _frm[3]
  79.  
  80. int        item_adjust_pos( short *newfrm )
  81. {
  82.     if ( FRM_X2(newfrm) > 621 )
  83.     {
  84.         FRM_X2(newfrm) = 621;
  85.         FRM_X1(newfrm) = FRM_X2(newfrm) - 24;
  86.     }
  87.     if ( FRM_Y2(newfrm) > 410 )
  88.     {
  89.         FRM_Y2(newfrm) = 410;
  90.         FRM_Y1(newfrm) = FRM_Y2(newfrm) - 24;
  91.     }
  92.     return (NORMAL);
  93. }
  94.  
  95. int        item_set_newpos( short *newfrm )
  96. {
  97.     int            ret;
  98.     int            fpos, nextFPos;
  99.     int            etyNum;
  100.     short        icnNum;
  101.     char        ttlStr[128];
  102.     char        pathStr[128];
  103.     char        paraStr[128];
  104.     int            atrInf;
  105.     int            nextFPos;
  106.     short        frm[4];
  107.  
  108.     fpos = 0;
  109.     FRM_X1(newfrm) = 0;
  110.     FRM_Y1(newfrm) = 0;
  111.     FRM_X2(newfrm) = 0;
  112.     FRM_Y2(newfrm) = 0;
  113.     while ( (fpos = ITM_GetPhysclNextFPos( ItmPath, fpos )) > 0 )
  114.     {
  115.         if ( ITM_GetStair( ItmPath, fpos ) == 0 )
  116.         {    /* ルートのみ    */
  117.             ret = ITM_GetItmType(ItmPath,fpos);
  118.             switch ( ret )
  119.             {
  120.                 case 1:    /* group */
  121.                     ITM_GetGrpData(ItmPath,fpos,&etyNum,&icnNum,ttlStr,&nextFPos,frm);
  122.                     break;
  123.                 case 2:    /* apllication */
  124.                     ITM_GetAplData(ItmPath,fpos,&icnNum,ttlStr,pathStr,paraStr,atrInf,frm);
  125.                     break;
  126.             }
  127.             if ( FRM_X1(newfrm) < FRM_X2(frm) )
  128.                 FRM_X1(newfrm) = FRM_X2(frm);
  129.             if ( FRM_Y1(newfrm) < FRM_Y2(frm) )
  130.                 FRM_Y1(newfrm) = FRM_Y2(frm);
  131.         }
  132.     }
  133.     FRM_Y1(newfrm) = FRM_Y1(newfrm) + 15;
  134.     FRM_X2(newfrm) = FRM_X1(newfrm) + 24;
  135.     FRM_Y2(newfrm) = FRM_Y1(newfrm) + 24;
  136.  
  137.     return (item_adjust_pos( newfrm ));
  138. }
  139.  
  140. /*************************************************************************
  141. *    画面
  142. *************************************************************************/
  143.  
  144. int        dsp_init(char **msg)
  145. {
  146.     int        i, len, x, y;
  147.     char    *p;
  148.  
  149.     DSP_writePage(0);
  150.     DSP_boxf(0,24,639,463,PSET,COLMIX(5,6));
  151.  
  152.     if ( msg )
  153.     {
  154.         i = 0;
  155.         while ( (p = msg[i++]) != NULL )
  156.         {
  157.             len = strlen(p);
  158.             x = (640 - len * 8)/2;
  159.             y = 32 + (i * 18);
  160.             DSP_str(x,y,C_MBLACK,5,16,p);
  161.         }
  162.     }
  163. }
  164.  
  165. /*************************************************************************
  166. *    サイズを示す文字列を返す
  167. *************************************************************************/
  168.  
  169. char    *getSizMsg( char *buf, unsigned int siz )
  170. {
  171.     static char    tmp[32];
  172.     float        f;
  173.  
  174.     if ( buf == NULL )
  175.         buf = tmp;
  176.  
  177.     if ( siz == 0 )
  178.         strcpy( buf, "0");
  179.     else if ( siz < 1024 )
  180.         sprintf( buf, "%u", siz );
  181.     else if ( siz < 1024*1024 )
  182.     {
  183.         f = (float)siz / (float)1024;
  184.         sprintf( buf, "%.1fK", f );
  185.     } else
  186.     {
  187.         f = (float)siz / (float)(1024*1024);
  188.         sprintf( buf, "%.1fM", f );
  189.     }
  190.  
  191.     return (buf);
  192. }
  193.  
  194. #include    "hewin.cci"
  195. #include    "gsplay.cci"
  196.  
  197. #define    _INST_HEWIN        (1)
  198. #define    _INST_GSPLAY    (2)
  199. #define    _INST_EXIT        (9999)
  200.  
  201. char    *InstallMsg[8] =
  202. {
  203.     " HEwin   … 超弩級アプリケーション・プロセッサ HEwin                 ",
  204.     " GSPLAY  … MIDI sound display system GSPLAY / [GS] emulation player ",
  205.     "",
  206.     " EXIT    … 終了                                                     ",
  207.     NULL
  208. };
  209.  
  210. int        install()
  211. {
  212.     int        ret;
  213.     char    *obj;
  214.     char    *mnu;
  215.  
  216.     obj = MNU_alloc(4);
  217.     MNU_setObj(obj, 0, MNU_NOR, 'H', "HEwin" , NULL,_INST_HEWIN , NULL );
  218.     MNU_setObj(obj, 1, MNU_NOR, 'G', "GSPLAY", NULL,_INST_GSPLAY, NULL );
  219.     MNU_setObj(obj, 2, MNU_BLK,  0 , NULL    , NULL, 0          , NULL );
  220.     MNU_setObj(obj, 3, MNU_NOR, 'X', "EXit"  , NULL,_INST_EXIT  , NULL );
  221.  
  222.     do
  223.     {
  224.         dsp_init(InstallMsg);
  225.  
  226.         DSP_writePage(1);
  227.         mnu = MNU_open( DlgX0, DlgY0, MNUATT_EXIT, obj, "INSTALLER MENU" );
  228.         ret = MNU_start ( mnu );
  229.         MNU_close(mnu);
  230.         switch ( ret )
  231.         {
  232.             case _INST_HEWIN:    hewin_install();    break;
  233.             case _INST_GSPLAY:    gsplay_install();    break;
  234.         }
  235.     } while ( ret >= 0 && ret != _INST_EXIT );
  236.     MNU_free(obj);
  237.  
  238.     return (NORMAL);
  239. }
  240.  
  241. /*************************************************************************
  242. *    MAIN
  243. *************************************************************************/
  244.  
  245. int        main( int argc, char **argv )
  246. {
  247.     char    tmp[256];
  248.  
  249.     init();
  250.  
  251.     FS_setFullPathname( tmp, argv[0] );
  252.     FS_getDnam( StartPath, tmp );
  253.  
  254.     install();
  255.  
  256.     term();
  257.     return (0);
  258. }
  259.